package com.redisUtils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

@Component
public class JedisClientPool implements JedisClient{
    @Autowired
    private JedisPool jedisPool;

    @Override
    public String set(String key, String value) {

        Jedis jedis = jedisPool.getResource();

        String result = jedis.set(key, value);

        jedis.close();

        return result;

    }



    @Override
    public String get(String key) {

        Jedis jedis = jedisPool.getResource();

        String result = jedis.get(key);

        jedis.close();

        return result;

    }



    @Override

    public Boolean exists(String key) {

        Jedis jedis = jedisPool.getResource();

        Boolean result = jedis.exists(key);

        jedis.close();

        return result;

    }



    @Override

    public Long expire(String key, int seconds) {

        Jedis jedis = jedisPool.getResource();

        Long result = jedis.expire(key, seconds);

        jedis.close();

        return result;

    }



    @Override

    public Long ttl(String key) {

        Jedis jedis = jedisPool.getResource();

        Long result = jedis.ttl(key);

        jedis.close();

        return result;

    }



    @Override

    public Long incr(String key) {

        Jedis jedis = jedisPool.getResource();

        Long result = jedis.incr(key);

        jedis.close();

        return result;

    }



    @Override

    public Long hset(String key, String field, String value) {

        Jedis jedis = jedisPool.getResource();

        Long result = jedis.hset(key, field, value);

        jedis.close();

        return result;

    }



    @Override

    public String hget(String key, String field) {

        Jedis jedis = jedisPool.getResource();

        String result = jedis.hget(key, field);

        jedis.close();

        return result;

    }



    @Override

    public Long hdel(String key, String... field) {

        Jedis jedis = jedisPool.getResource();

        Long result = jedis.hdel(key, field);

        jedis.close();

        return result;

    }

    public String RANDOMKEY(){
        Jedis jedis = jedisPool.getResource();
        return jedis.randomKey();
    }
}
